{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5d904dee",
   "metadata": {},
   "source": [
    "# Example 13: Phase transition"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6465ec94",
   "metadata": {},
   "source": [
    "In this example, we will use KAN to learn phase transitions in data. Phase transition is an important concept in science. We consider a toy example $f(x_1,x_2,x_3)$ is 1 if $g(x_1,x_2,x_3)>0$, and is 0 if $g(x_1,x_2,x_3)<0$. $g(x_1,x_2,x_3)={\\rm sin}(\\pi x_1)+{\\rm cos}(\\pi x_2)+{\\rm tan}(\\frac{\\pi}{2}x_3)$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94056ef6",
   "metadata": {},
   "source": [
    "Intialize model and create dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0a59179d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cuda\n",
      "checkpoint directory created: ./model\n",
      "saving model version 0.0\n"
     ]
    }
   ],
   "source": [
    "from kan import KAN, create_dataset\n",
    "import torch\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "print(device)\n",
    "\n",
    "model = KAN(width=[3,1,1], grid=3, k=3, device=device)\n",
    "\n",
    "# create dataset\n",
    "f = lambda x: (torch.sin(torch.pi*x[:,[0]]) + torch.cos(torch.pi*x[:,[1]]) + torch.tan(torch.pi/2*x[:,[2]]) > 0).float()\n",
    "dataset = create_dataset(f, n_var=3, device=device)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3837440b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.5060, device='cuda:0')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.mean(dataset['train_label'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "fe38f7c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 7 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8627b850",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.1\n"
     ]
    }
   ],
   "source": [
    "# set the last activation to be tanh\n",
    "model.fix_symbolic(1,0,0,'tanh',fit_params_bool=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3957140b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAFICAYAAACcDrP3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuDUlEQVR4nO3de1jUZd4/8Pc9IDicRBDPWUDkWVFTezx3ecDEytOm2W5R+nhYD6tPWWprnnNtMwUtS7TS0mivRMvDij5a+tNqUQItD4QiGuJZhoCBYYa5f3+MM8+ASAjf4cvMvF/XxbULw9iH4eb7nvv4FVJKCSIiIgVp1C6AiIhcD8OFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFeapdAJEzkFLi9u3bKCgogJ+fH4KDgyGEULssojqLPReiSuh0OsTGxiIiIgIhISEIDQ1FSEgIIiIiEBsbC51Op3aJRHWS4J0oiSqWlJSE0aNHQ6/XA7D0XqysvRYfHx9s374dUVFRqtRIVFcxXIgqkJSUhOjoaEgpYTab7/t9Go0GQgjs2bOHAUNkh+FCVI5Op0PLli1RVFRUabBYaTQaaLVaZGdnIzAw0PEFEjkBzrkQlbN582bo9foqBQsAmM1m6PV6bNmyxcGVETkP9lyI7EgpERERgczMTDzIn4YQAmFhYcjIyOAqMiIwXIjKuHXrFkJCQmr0/ODgYAUrInJOHBYjslNQUFCj5+fn5ytUCZFzY7gQ2fHz86vR8/39/RWqhMi5MVyI7AQHByM8PPyB502EEAgPD0dQUJCDKiNyLgwXIjtCCMyYMaNaz505cyYn84nu4oQ+UTnc50JUc+y5EJUTGBiI7du3QwgBjabyPxHrDv3ExEQGC5EdhgtRBaKiorBnzx5otVoIIe4Z7rJ+TavVYu/evRgyZIhKlRLVTQwXovuIiopCdnY21qxZg7CwsDKPhYWFYc2aNbhy5QqDhagCnHMhqgIpJb799lsMHDgQBw8exJNPPsnJe6JKsOdCVAVCCNucSmBgIIOF6A8wXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixTFciP6A0WjElStXcPbsWQDAhQsXcOfOHZjNZpUrI6q7eJtjovvQ6XTYvn07tm7ditOnTyM/Px8lJSWoX78+QkJC0LdvX0yYMAG9e/eGp6en2uUS1SkMF6IK/PDDD5g9ezZOnTqF7t27Izo6Gp06dYKfnx90Oh1SUlKwa9cunD9/HmPHjsWyZcsQEhKidtlEdQbDhaic/fv3IyYmBn5+flixYgWGDRuGkpISJCQkwGAwICAgAOPGjYPRaERCQgIWLVqE9u3b47PPPkOTJk3ULp+oTmC4ENn59ddfMXToUPj6+iIhIQHt2rWDEAKZmZno2rUr8vLyEBoaipSUFDRs2BBSShw9ehTjx4/HgAEDsHHjRnh7e6v9YxCpjhP6RHeVlpbi7bffRm5uLtatW2cLlsoIIdCnTx+88847+Prrr7Fv375aqpaobmO4EN11/vx57Nq1C6NGjUKfPn3+MFishBAYMWIEnnjiCcTHx8NkMjm4UqK6j0tciO76/vvvUVBQgNGjRyMrKwuFhYW2x7Kzs1FaWgoAKCkpwenTpxEQEGB7vHnz5hg1ahQWLVqEa9euoWXLlrVeP1FdwnAhuuvcuXPw8fFBWFgYJk+ejGPHjtkek1LCYDAAAHJycjB48GDbY0IIrFq1Ch07doRer0dOTg7Dhdwew4XorqKiInh6esLb2xsGgwHFxcUVfp+U8p7HTCYTtFptmRAicmcMF6K7GjdujKKiIuh0OvTs2RO+vr62x4qKivD999/bQqRXr162jZNCCLRq1Qo3btyARqNBw4YN1foRiOoMhgvRXd26dYPRaERycjJWrlxZ5rHMzEx0794deXl5aNKkCb788ksEBgbaHhdCYP78+WjatCmHxIjA1WJENj169EBYWBg2b96MwsJCeHh4lPmwEkJAo9HYvq7RaHD16lV89dVXiI6ORoMGDVT8KYjqBoYL0V3BwcGYPn06fvrpJ8TFxVV5SbHBYMDSpUtRVFSEyZMnV3kJM5Er47AYkZ2YmBgcOXIEK1euhI+PD6ZOnYr69esDADw9PeHp6WnrxUgpkZ+fj+XLlyMhIQGrV69G69at1SyfqM7g8S9E5dy8eRPTpk3D7t27ERUVhdmzZ6Nt27ZIT0+H2WyGl5cXHn30USQnJ+Pdd99FWloalixZgqlTp5YZPiNyZwwXogoUFhYiPj4ecXFxuH79OsLCwhAREQF/f3/k5uYiPT0dOTk56NatGxYuXIj+/ftDo+EoM5EVw4WoEteuXcPBgwdx+PBhZJ48ieLkZDTs2xcdevfGkCFD0LNnT/j4+KhdJlGdw3AhqqLS48che/SA5vhxaB5/XO1yiOo0TugTVZFtPoXDX0R/iH8lRESkOIYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQkREimO4EBGR4hguRESkOIYLEREpjvdzIaoqKS0fQlg+iOi+2HMhehAMFaIq4c3CyCWYjEbkXr4MaTarXUqNCSEQ2KoV6nl5qV0KUbUxXMgl6LKzkTx1KgKd+fbDej3g44O8EyfQff16hISHq10RUbUxXMglSCkR0Lkzei1frnYp1fPdd8DChcDq1ThqMlnmdoicGMOFXI5wpnmR0lIgMRGYPh24eRPyzTeB1q3VroqoxjihT6QWkwn46CNg4kTg5k2gUyfgH/8AvL3VroyoxhguRGowGCxB8tprQH4+0L8/sGMH0LkzV6SRS+CwGFFtkhIoKgLeeguIi7MMi40YAXz4IRASonZ1RIphz4Wotkhp6aXMmgXExgJmMxATA3zyiSVY2GMhF8JwIaoNUgI6HTBlCrBpkyVIZs609F4CAhgs5HI4LEbkaFICt24BkyYB33wD1KsHvPEGMG8eUL++2tUROQTDhciRpASuXwdeeQXYt88SJgsXArNnA9yBTy6M4ULkKFICV68CL70EHDwI+PgAK1YAU6cCnvzTI9fGFk7kCFICV64Af/kLcPgw4OsLrFoFTJgAeHioXR2RwzFciJQmJZCdDfz5z8D/+3+Avz+wZg3w4osMFnIbDBciJUkJ/PYb8MILwLFjlpVga9daPtdwcSa5D4YLkVIqCpb33weef57BQm6H4UKkBPuhMGuwfPABMG4cg4XcEls9UU1ZJ+///Gfg6FEGCxEYLkQ1Y11u/Je//N/k/bp1DBZye2z9RNVl3SD54ouW5cZ+fpbJ+/HjGSzk9vgXQFQdUlruwRITAxw6ZNnHsmYNV4UR3cW/AqIHJSVw+7ZlQ+T+/Zad9++9Z9mJz30sRAAYLkQPRkogN9dyCOWePYBWC7zzjuXsMAYLkQ3DhaiqpATy8ixng339teUQyrfftgQNg4WoDIYLUVVYb/Q1Ywbw1VeWE40XLwamTeMhlEQVYLgQ/REpgcJCyzH527ZZ7sfy979b7ijJYCGqEMOFqDJSAno9MGcOsHmzJUzmzrV8Xq+e2tUR1VkMF6LKFBdb7hgZH29ZYvzqq5bPeaMvokoxXIjup7gYWLAAWL/eco/7GTOAt94CvL3VroyozmO4EFXEYACWLgXi4ixDY1OmAMuW8Z73RFXEcCEqr6TEcjvid98FzGZg4kTgH/+w7GkhoiphuBDZMxotmyJXrABMJsu5Ye++a9mFT0RVxnAhsjIaLce4LFtmCZbx4y3nhfn6WuZciKjKGC5EgCVMYmOBRYssIfPcc5aj8/39GSxE1cBwITKZLEflv/WWZb5l1CjLzb4CAhgsRNXEcCH3ZjJZeihvvmlZIfbss8BHHwGBgQwWohpguJD7MpmA998H5s+3BMvTT1s2SzZsyGAhqiGGC7kna49l3jzLZsnhw4GNG4GgIAYLkQIYLuR+TCbL5kj7HsumTUBwMIOFSCEMF3Iv1uXG1jkWBguRQ/C8cHIfJSWWDZFLl1r+/4gRwIYNHAojcgCGC7kHg8Gy6/4f/7D0XsaMsRxIycl7IodguJDrKyqybI5cvRooLbXsvF+7FmjQgMFC5CAMF3Jd1jtIzpsHfPih5fOXX7bMuXDnPZFDMVzINUkJ5OVZbk382WeWIJk61TIs5uPDYCFyMIYLuR4pgZs3LWGyc6fl1sSzZwMLF/LYfKJawnAh13P5MjBhAnDokOWukX//O/Daa7yDJFEtYriQazlzBnjpJeCnnwA/P8sKscmTLb0XIqo1/Isj12EwWHooP/1k2bsSFweMHQt4eKhdGZHbYbiQ6/D2BhYvhtTpLEuPBw+2TNxLqXZlRG6H4UIuQQiB/FOn8KOPD9CrF/D998APP6hdVrXkp6VxNRs5PSEl39aR8zOWlOBOZiZkaanapdSY0GgQFB6Oel5eapdCVG0MFyIiUhyHxYiqyv59GIetiCrFI/eJqio1FdBoLP9LRJViuBARkeIYLkREpDiGCxERKY7hQkREimO4EBGR4hguRESkOIYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQlQFUkrk5uYCAHJzc8EbuBJVjuFCVAmdTofY2FhERERg4KBBAICBgwYhIiICsbGx0Ol06hZIVEcJybdgRBVKSkrC6NGjodfrAQCRUuInAF0BpN29zbGPjw+2b9+OqKgo9QolqoPYcyGqQFJSEqKjo1FUVAQp5T3DYNavFRUVITo6GklJSSpVSlQ3sedCVI5Op0PLli1RVFQEs9ls+3oXwNZzSbX7fo1GA61Wi+zsbAQGBtZusUR1FHsuROVs3rwZer2+TLBUxmw2Q6/XY8uWLQ6ujMh5sOdCZEdKiYiICGRmZt4zFHa/ngsACCEQFhaGjIwMiLvzMUTujD0XIju3b9/GhQsXHnipsZQSFy5cwJ07dxxUGZFzYbgQ2SkoKKjR8/Pz8xWqhMi5MVyI7Pj5+d33sXOwDImdq+T5/v7+SpdE5JQYLkR2goODER4eXuG8SREscy1FFTxPCIHw8HAEBQU5ukQip8BwIbIjhMCMGTOq9dyZM2dyMp/oLq4WIyrnfvtc7of7XIjuxZ4LUTmBgYHYvn07hBDQaCr/E9FoNBBCIDExkcFCZIfhQlSBqKgo7NmzB1qtFkKIe4a7rF/TarXYu3cvhgwZolKlRHUTw4XoPqKiopCdnY01a9YgLCyszGNhYWFYs2YNrly5wmAhqgDnXIiqQEqJb7/9FgMHDsTBgwfx5JNPcvKeqBLsuRBVgRDCNqcSGBjIYCH6AwwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBeiP2A0GnHlyhWcPXsWAHDhwgXcuXMHZrNZ5cqI6i7e5pjoPnQ6HbZv346tW7fi9OnTyM/PR0lJCerXr4+QkBD07dsXEyZMQO/eveHp6al2uUR1CsOFqAI//PADZs+ejVOnTqF79+6Ijo5Gp06d4OfnB51Oh5SUFOzatQvnz5/H2LFjsWzZMoSEhKhdNlGdwXAhKmf//v2IiYmBn58fVqxYgWHDhqGkpAQJCQkwGAwICAjAuHHjYDQakZCQgEWLFqF9+/b47LPP0KRJE7XLJ6oTGC5Edn799VcMHToUvr6+SEhIQLt27SCEQGZmJrp27Yq8vDyEhoYiJSUFDRs2hJQSR48exfjx4zFgwABs3LgR3t7eav8YRKrjhD7RXaWlpXj77beRm5uLdevW2YKlMkII9OnTB++88w6+/vpr7Nu3r5aqJarbGC5Ed50/fx67du3CqFGj0KdPnz8MFishBEaMGIEnnngC8fHxMJlMDq6UqO7jEheiu77//nsUFBRg9OjRyMrKQmFhoe2x7OxslJaWAgBKSkpw+vRpBAQE2B5v3rw5Ro0ahUWLFuHatWto2bJlrddPVJcwXIjuOnfuHHx8fBAWFobJkyfj2LFjtseklDAYDACAnJwcDB482PaYEAKrVq1Cx44dodfrkZOTw3Aht8dwIQJgNptx9epVeHp6wtvbGwaDAcXFxRV+r5TynsdMJhO0Wm2ZECJyZwwXcjsGgwG//PIL0tLSbB8nT55Efn4+tFotdDodevbsCV9fX9tzioqK8P3339tCpFevXraNk0IItGrVCjdu3IBer8f48ePRs2dPdOnSBZGRkejSpQuaNWtW5TkcIlfApcjk0nQ6XZkQSU1NxdmzZ2EymSCEQOvWrREZGYnIyEgYjUYsWbIEcXFxmDhxYpl/JzMzE927d0deXh4eeeQRnDhxAoGBgbbHhRCYP38+Nm/ejBEjRuDcuXNITU1FXl4eACAkJARdunQpEziPPvooPDw8avPlIKo1DBdyCVJKXLlyBampqUhNTcXJkyeRmpqKrKwsAED9+vXRsWNHW5B06dIFHTt2LNM7uX37Nvr06YOGDRti3759ZSbs77fPxfrfzsnJQf/+/fHMM89g1apVEEJASolLly4hNTXVFmypqanIzs4GAPj6+qJTp062eiIjI9GxY0fUr1+/9l44IgdhuJDTKS0tRXp6+j09ktu3bwMAGjZsaOsldO7cGV26dEHr1q2rdP7X+++/j1dffRV///vfMXfuXNtzKguX4uJizJo1C7t27cKhQ4fQunXrSv8bt27dKlN3Wloazp07B7PZDA8PD7Rt27ZM4ERGRiIoKKiGrxpR7eKcC9Vper0eP//8c5mL8c8//4yioiIAwMMPP4zIyEhMnz7ddkF+6KGHqj2/ERMTgyNHjmDlypXw8fHB1KlTbT0JT09PeHp62oaypJTIz8/H8uXLkZCQgNWrV/9hsABAo0aNMGjQIAwaNKjCn9MaONu3b7f9nK1atSozpFbTn5PI0dhzoTrD+o7eflgrPT29zDt6+95I586dHfKO/ubNm5g2bRp2796NqKgozJ49G23btrXV4uXlhUcffRTJycl49913kZaWhiVLlmDq1KmKzqGYTCZkZGTcM6xm7aEFBQWVGeaLjIxEmzZteEIz1QkMF6p1UkpkZWXdM6xlnYvw8fEpEyBdunRB+/btodVqa63GwsJCxMfHIy4uDtevX0dYWBgiIiLg7++P3NxcpKenIycnB926dcPChQvRv39/aDSOP/DCfm7Jvpdz8eJFAIC3tzc6duxYZvFAp06dyswtEdUGhgs5lNFoxNmzZ8v0RtLS0u67iioyMrJOraK6du0aDh48iMOHD+PkyZNITk5G37590bt3bwwZMgQ9e/aEj4+P2mVCp9PZXl/ra3zmzBnbqrjHHnuszLBaZGQkGjdurHbZ5MIYLqSY/Px8nDp1qkyQ/PLLLygpKQEAhIeHl+mNREZGOtX+j+PHj6NHjx44fvw4Hn/8cbXL+UPFxcU4c+ZMmV7OyZMnUVBQAMByZI39HE5kZCTCwsKc5vdBdRvDharl2rVrZYZl0tLScP78eUgpUa9ePbRv3/6e+RH7pb3O6KeffkK3bt2QkpKCrl27ql1OtZjNZly4cKHMHE5aWhquXbsGAAgICCgT/l26dEG7du3g5eWlcuXkbBguVCnrxaj8sJb1YuTv73/PsllXvRi5QrjcT/k3C6mpqcjIyACAMm8WrL9rV3izQI7FcCEbg8GA06dPlwmS8sMo9iESGRmJ0NDQWpnIrgtcOVwqYj/MaQ2c8sOc5YfVnGmYkxyL4eKmyh+LUtkEsPXD3SeA3S1cKmJdoFG+l2NdoNG4ceMyPVkec+O+GC4urvzSVeuHdelq+WNRuHT1/hguFbNfWm4fOOWPubEPnA4dOvCYGxfHcHEhFR2LkpaWhlu3bgH4v2NR7DfeVfVYFGK4PKjyx9xUtCmWx9y4LoaLkyp/LEpaWhpOnTp1z7Eo9kHC40JqhuFScxUdc2Pfbq3H3Nj3cthunRPDxQncvn27zLDW/d4B2n/wHaDyGC6OYX/Mjf2w2v2OuWGP2zkwXOqQqh6LYv+HVtvHorgzhkvtqeiYm/vdQoHH3NRNDBeV2K+6sR8iqOhYFOumNq66URfDRX32qxwrO+bGflgtJCRE7bLdEsOlFhQUFJTZN3K//QL278K4X6DuYbjUTVU55qb8uWo85sbxGC4Ks9/pbA2Syo5F6dSpExo0aKB22VQFDBfnYX+yhH0vx/6Ym/Jv6Fz1ZAm1MFyq6UGORbEGCRuvc2O4OD/7N3/Wv1kec+MYDJcqMBqN+Pnnn3ksiptjuLimqhxzYx84Xbt2RdOmTVWuuu5juFRBVlaWbYzWOmFof3Ksux+L4i4YLu7D/j5E5RfcxMTE4JNPPlG7xDqP4VIF9i8RJwHdl5QSUkoIIdgO3BCvAw+Gu5CqgA2JrNgW3Bd/9w/G6cPFaDTi8uXLMJvNapdSY0IItGrVipP+1cB2QGwDdYvTh0t2djamTp3qFLedrUhpaSkAwMPDAydOnMD69esRHh6uclXOx9nbgT22g+qxtoFu3brBYDA49anLrtAGnD5cpJTo3Lkzli9frnYp1fKvf/0LCQkJmDRpEoxGIzgFVj3VaQdZWVnYsWMHzp49i2bNmmHkyJHo3Lmz6sMfc+fOZTuoBmsbGDlyJN544w3MmzcPAwcOdMpVm67QBpw+XOypfVF4UMXFxVi/fj2OHDkCrVaL5s2bq12SS/ijdmA0GrFlyxYsXLgQOTk5tq+vW7cOCxcuxLRp01Q7FNHZLyhqKykpwbJly3D48GGkpKTg9ddfx6uvvor69es7zfXBVdqA80W6i5BS4scff8R//vMfeHl54eWXX+a5YbXAaDTin//8J6ZPn46cnBy0atUK48aNQ4cOHZCXl4d58+Zhy5YtLvMH7m7q1auHt956C/369UNhYSEWL16MWbNmIT8/n7/TWsZwUYnZbMamTZtgMBjQrVs39O7dW+2SXJ7ZbEZ8fDyWLl2KkpISjBw5EkeOHMHWrVtx8OBBDB8+HMXFxViwYAHOnTvHi5ETEkKgW7du2LFjB6ZMmQIhBDZu3Ijp06czYGoZw0UlGRkZ2Lt3LzQaDSZMmMBj8x1MSolDhw7hzTffhMFgwKhRo7Bp0ybbjagaNWqEuLg4hIeH4+rVq1i5cqVtsQU5n4YNG2LVqlWYN28ePD09sXXrVrz66qu2m5KR4zFcVCClxNatW5Gbm4vQ0FA8/fTTapfk0qSUyM7Oxt/+9jfk5eWhR48eWLt2LRo0aGAbh7cu/XzjjTeg0WiwY8cOpKWl8Z2uE6tfvz7efPNNzJ07Fx4eHvj000+xZMkS27Eu5FgMFxXcuHED27ZtAwCMHz8ejRo1Urki12Y0GrFgwQKcPXsWjRs3xvvvv48mTZrcM8ErhMCf/vQndOzYEfn5+diwYQPDxcl5eXlh/vz5mDZtGqSUWLNmDdavX89eaS1guNQyKSW+/vprZGVlITg4GC+88ILTrGJxRlJKbN++HQkJCfD09MTChQvRtWvX+77mAQEBmDhxIoQQ+Oabb3Dp0qVarpiU5u3tjaVLl+K5555DSUkJ3nrrLXzzzTd84+BgDJdaptfr8fHHH0NKieHDhzv1Jqm6TkqJS5cuYcGCBSgpKcHw4cMRExNTaZgLITBy5Ei0aNECN27cwM6dO3kRcgG+vr6IjY1Fv379kJ+fjxkzZiAlJYW/WwdiuNQiKSW+++47pKamQqvVYsKECU65wctZGI1GLFy4EJmZmWjevDmWL19epV3bTZs2xfDhwwFYNrlyEtj5WRdtbNiwAY899hhycnIwceJE/PbbbwwYB+GVrRaZTCZs2LABRqMRvXv3Rvfu3Tkk5iBSSiQmJuLLL7+Ep6cnFixYgDZt2lTp9RZCYOzYsfDy8sLJkydx6tSpWqiYHE0IgYiICGzYsAGNGjXCqVOn8Ne//hV5eXkMGAdguNQSKSXS0tJw6NAheHh4YNKkSU59KF1dJqXExYsX8eabb6KkpATDhg3Diy++WOUgt+6VaNu2LYqLizk05kKEEOjbty9WrVoFrVaLf//737bl6aQshkstMZvN2LhxIwoLC9GhQwcMGTKEvRYHKSoqwhtvvIGLFy+iRYsWWLFixQMfYujr62tbIr53717bXUfJ+Qkh8Pzzz+P111+HRqNBfHw83nvvPZhMJrVLcykMl1qSmZmJHTt2QAiBCRMmwN/fX+2SXJLZbEZcXBx27twJLy8vLF26tMrDYfaEEBg+fDi0Wi0yMjJw8uRJB1VMavD09MTrr7+OF198EaWlpVi+fDk+/vhjlziuv65guNQCKSU2b96MW7du4eGHH8aYMWPYa3GQxMREvP322zCbzYiJicH48eOr/Vq3b98ebdq0gcFgwJ49ezg05mLq16+Pd999F9HR0SgqKsKcOXOwdetWBoxCGC614OrVq/j8888BAH/5y1/QpEkTlStyTQaDAQkJCSgsLMSAAQOwfPly1KtXr9r/no+PD4YOHQoA2L9/P/R6vVKlUh0ghEBgYCA++ugj9O/fH/n5+Zg+fTo++eQTDpEpgOHiYFJKfPHFF/jtt9/QuHHjB5pYpgfj7e2Njz76CHPnzkV8fDyCgoJq9FoLITB06FB4eXnh3LlzSE9PV7BaqguEEGjatCm2bNli2wMzc+ZMLFu2DAUFBeyt1gDDxcHu3LmDTZs2QUqJP/3pTwgNDVW7JJcWHByMZcuWITQ0VJEQ79SpE0JDQ1FUVIQDBw7wYuOChBBo2bIltm3bhujoaBQXF2PZsmUYM2YMTpw4gdLSUv7eq4Hh4kDWo0d+/fVXBAYGYtKkSey11AIhhGKvc0BAAAYMGAAASEpKgtFoVOTfpbpFCIFmzZrh888/x6xZs+Dt7Y39+/dj8ODBmDJlCk6cOAGDwcCQeQAMFwfKy8vD+vXrYTabMWLECLRr147h4oSGDh0KDw8PnDx5EtnZ2WqXQw4ihECDBg2wcuVKfPnll+jatSsKCgqwadMmPPnkkxg6dCg++OADZGRkoKSkhEHzBxguDiKlxM6dO/Hzzz/D398ff/3rX3nUixMSQqBHjx5o3LgxdDodjh49youKi/P09ER0dDT+93//F+vXr0fXrl1hNBpx+PBhzJgxAz169MBTTz2FtWvXIiMjAyaTiW2iArzaOcjvv/+OtWvXwmw24+mnn0ZkZCR7LU6qcePG6NGjB6SU2LdvHy8kbsC6kmzixIn47rvvsGfPHvz3f/83HnnkERQUFODbb7/FrFmz8MQTT2DcuHHYv38/iouL2TbsMFwcwHqu1cmTJ+Hn54eZM2fCw8ND7bKomjQaDaKiogAAP/zwA+7cuaNyRVRbhBDw8/PDwIEDsX79ehw/fhy7du3C5MmTERoairy8PCQmJuLZZ5/Fs88+i6NHj/JeMXcxXBxAp9MhNjYWZrMZzz77bKX3D6G6TwiB/v37w9/fH1euXEFaWpraJVEtE0JAo9EgODgYUVFR+OCDD5CcnIwvvvgCgwcPhhACBw4cQHR0NBYsWMDDMMFwUZz1Fsa//PILAgICMGvWLPZaXEBoaCjatWsHk8mE/fv3u/2Fw51ZVyMGBwdjzJgx+Oabb7Bjxw488cQTKCwsxMqVKzFu3DhcvnzZrdsJw0Vh165dQ1xcHMxmM8aOHcu5Fhfh7e2NQYMGAQAOHTrEe7wQAEvQeHt7IyoqCnv37sX8+fOh1WqRlJSEMWPGICMjw20DhuGiILPZjA8//BAXLlxASEgIZs+ezRViLkIIgUGDBqFevXpIT0/H+fPn1S6J6hDrAoBFixZhw4YNCAoKQkpKCsaNG4fMzEy3DBhe+RQipcTZs2fx4YcfQkqJSZMm4bHHHmOvxYV06tQJrVq1QmFhIb777ju3vGBQ5Tw8PDBu3Dh8+umnaNSoEdLS0hATE4Pr16+7XXthuCjEaDTi7bffxs2bNxEREcF9LS6oQYMG6NOnDwDLbn2uCqKKaDQaREdH48MPP0RAQACOHTuGmTNnorCwUO3SahWvfgqQUmLv3r1ITEyEp6cn5s2bh6ZNm6pdFilMCIGoqCgIIZCSkoJr166pXRLVUUIIjBgxAitWrICXlxcSExPxz3/+063ekDBcakhKievXr2PBggUwGAwYNGgQnnvuOQ6HuSAhBP7rv/4LwcHBuHXrFn744Qe3G+qgqtNoNJg4cSKmTZsGKSVWrVqF3bt3u02bYbjUkMlkwvLly3H69GnbibxarVbtsshBWrRogW7dusFsNmPv3r1uc6Gg6qlXrx4WLFiAJ598Enq9Hq+99hqysrLcot0wXGrAen7Ypk2boNFo8Nprr3HpsYvz8PDAsGHDAACHDx9Gbm6uyhVRXdegQQOsWbMGzZs3x4ULFzB//nwYDAa1y3I4hks1SSlx5swZzJkzB8XFxRgyZAimTZvGSXwXJ4TAwIED4e/vj+zsbBw/ftwt3oVS9Qkh0L59eyxZsgT16tVDYmIiEhISXL7d8EpYDVJK3Lx5E1OmTMHly5fxyCOP4L333oOvr6/apVEtCA8PR+fOnWEymbBr1y61yyEnIITA+PHjMXLkSBiNRixevNjlh8cYLg9ISon8/HzMmDEDx44dg7+/P+Li4tC6dWsOh7kJLy8vDB8+HABw4MAB6HQ6dQsip+Dt7Y0lS5agRYsWuHTpEpYvXw6TyaR2WQ7DcHkAUkoUFhbif/7nf/DVV1/By8sLy5Ytw7BhwxgsbkQIgaeeegp+fn7IysrCjz/+6NLvQEkZQghERERg7ty58PDwwBdffIFDhw65bNthuFSRlBI6nQ7Tpk3Dp59+Cg8PD8ydOxdTpkzhPIsbeuyxx9CtWzeYTCZ89dVXLnuBIGUJIfDSSy+hb9++KCoqwuLFi/H777+rXZZD8KpYBVJKXLx4EePHj8fnn38ODw8PzJkzB/PmzUO9evXULo9U4OXlhTFjxkAIgaSkpAfaUCmlhNFoxKlTp7B582Zs27YNmZmZMJvNDqyY6gpfX18sWrQIfn5+SE5OxmeffeaSb04YLpWQUsJkMmH37t146qmnkJSUBK1Wi8WLF2PhwoXw9vZWu0RSiRAC0dHRaNSoEa5evVrlPS9SSmRlZeGVV15Bnz598PLLL+PPf/4zevXqhQ8++MClx+DJQgiBXr164fnnn4fZbMZ7772HK1euqF2W4hgu92E2m5GRkYGpU6di3LhxyMjIQLNmzbBx40bMmTMHXl5eapdIKnvooYcQFRUFKSU2b978h8fwSylx7NgxPPXUU9i6dSuKiooQHh6OFi1a4MaNG5gzZw4++ugj9mDcgIeHB1577TU0bdoUWVlZWLduncv93hkudqzDFb/88gvmzJmDfv36YdOmTSgpKcHgwYOxb98+jB07ljf/IgCW4z1efvlleHt74/jx4zhy5Mh9ey9SSuzfvx/PPfccfv31VzRr1gwbNmzAiRMn8OOPP2LkyJEwmUxISUmB0Wis5Z+EapsQAo8++iimTp0KIQQ+/vhjnDt3zqWGx9w6XKSUkFKiuLgYGRkZ+PjjjzFixAj06dMHq1evxs2bNxEeHo5169YhMTERHTp04KowsrGeNdarVy+UlJQgNja2wp3XUkr8+9//xksvvYRr166hTZs22LlzJ2JiYtCgQQM0b94c69evR1xcHNauXcvhVjchhMCkSZMQERGBW7duYfXq1S51sKWn2gXUBuu7AbPZDIPBgLy8PGRnZ+PMmTM4ceIEkpOTkZ6ejvz8fEgp4eHhgbZt29rGw5s0acJQoQp5e3tj1qxZOHbsGA4dOoQdO3Zg3LhxtvZiNpvx9ddfY/Lkybh16xY6duyIbdu2oV27drbvEUIgJCQEU6ZMUfNHIRU0btwYf/vb3zBjxgz861//wqRJk/D444+rXZYiXCpcpJQoLS2FXq/HnTt3cPXqVfz222+4ePEiLl68iEuXLiE7OxvXr1/H77//jpKSEttzPT098dBDD6Ffv34YM2YM+vXrhwYNGjBUqFJCCAwePBjDhg3Dzp07MX/+fLRp0waRkZHQ6/WIj4/HokWL8Pvvv6Nz58744osvKtxwa/3clYZF6I8JIfD8888jPj4eaWlpeO+997Blyxa1y1KEy4TLN998gwMHDuDMmTO4fPkybt++Db1eX+H4tYeHB3x8fNCqVSu0bt0aPXr0QJ8+fdCxY0cEBQVBCMFQoSrz9vbG8uXLkZqaikuXLuGZZ57BoEGDcPbsWaSkpKC0tBS9e/fGJ598gvDwcLYtKqNBgwaYPXs2XnnlFezevRvJyclql6QIlwmXvXv3Ij4+3vZ5vXr14Ovri4YNG6Jp06Zo1aoVQkNDERoairCwMDz88MNo3LgxfH19odFo+AdP1SaEQJs2bfDJJ59g4sSJyMzMxObNmwEAPj4+eOGFF7B06VKEhISwndE9rDcWe//995GcnIy4uDi0bNlS7bJqzGXCZcCAAbh58yY6dOiAtm3bIiwsDM2aNUNgYCC0Wi08PSv/UTkc4TrU+l32798fBw8exLZt23DmzBk0b94czzzzDHr06GFrf2xntcPZXmc/Pz+8+uqriI+PR0xMDA4dOqR2STXm9OEihMCpU6eg1WrRoUMHaDQapKenIz09Xe3SHlhaWhrf2VaTtR0sXrxY7VIAAGFhYRBC4MCBAzhw4MADPZftoHrqWht4UCaTCY8//jj+85//4NSpU07fBoR0togvp6SkBJmZmS6xhE+j0SA8PJwbNKuB7YDYBuoWpw8XIiKqe5x+WKy22Gews3dXqXrYBohtoOrceof+g0hNTYWHhwdSU1PVLoVUkpqaCo1GwzbgxtgGqo7hQkREimO4EBGR4hguRESkOIYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQkREimO4EBGR4hguRESkOIZLFUgpkZubCwDIzc0Fb97pftgGiG3gwTBcKqHT6RAbG4uIiAgMGjQIUkoMGjQIERERiI2NhU6nU7tEcrDybQAA24CbYRuoHiEZvxVKSkrC6NGjodfrAVR8e1MfHx9s374dUVFRqtRIjsU2QGwD1cdwqUBSUhKio6MhpYTZbL7v92k0GgghsGfPHjYsF8M2QGwDNcNwKUen06Fly5YoKiqqtEFZaTQaaLVaZGdnIzAw0PEFksOxDRDbQM1xzqWczZs3Q6/XV6lBAYDZbIZer8eWLVscXBnVFrYBYhuoOfZc7EgpERERgczMzAdaCSKEQFhYGDIyMmzjsOSc2AaIbUAZDBc7t27dQkhISI2eHxwcrGBFVNvYBohtQBkcFrNTUFBQo+fn5+crVAmphW2A2AaUwXCx4+fnV6Pn+/v7K1QJqYVtgNgGlMFwsRMcHIzw8PAHHi8VQiA8PBxBQUEOqoxqC9sAsQ0og+FiRwiBGTNmVOu5M2fO5CSeC2AbILYBZXBCvxyubye2AWIbqDn2XMoJDAzE9u3bIYSARlP5y2PdmZuYmMgG5ULYBohtoOYYLhWIiorCnj17oNVqIYS4p5tr/ZpWq8XevXsxZMgQlSolR2EbILaBmmG43EdUVBSys7OxZs0ahIWFlXksLCwMa9aswZUrV9igXBjbALENVB/nXKpASok7d+4gPz8f/v7+CAoK4qSdm2EbILaBB8NwISIixXFYjIiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixf1/2qhVBBFFUzkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 500x400 with 7 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model(dataset['train_input'])\n",
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "be0b0daf",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "| train_loss: 7.71e-02 | test_loss: 1.17e-01 | reg: 2.43e+02 | : 100%|█| 50/50 [00:09<00:00,  5.32it\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.2\n"
     ]
    }
   ],
   "source": [
    "model.fit(dataset, opt=\"LBFGS\", steps=50);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2f9b37a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 7 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot(beta=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d6d85bda",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
